﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using CeA.Reports.Atendimento.DataAccess.Criteria;
using CeA.Reports.Atendimento.DataAccess.DTO;
using CeA.Reports.Atendimento.Web.WebControls;
using Qtech.Reports.Atendimento.Services;

namespace CeA.Reports.Atendimento.Web.site {
    public partial class relatoriorankingloja : System.Web.UI.Page {
        
        private List<RelatorioRankingDTO> m_reportDatasource = new List<RelatorioRankingDTO>();
        private List<RelatorioRankingDTO> m_reportRfsDatasource = new List<RelatorioRankingDTO>();
        private RelatorioRankingDTO m_reportConsolidadoDatasource = new RelatorioRankingDTO();

        protected void Page_Init(object sender, EventArgs e)                            {
            filtro.Pesquisar += new FiltroHierarquico.PesquisarEventHandler(filtro_Pesquisar);
            btnExportarExcel.Click += new EventHandler(btnExportarExcel_Click);
        }


        protected void Page_Load(object sender, EventArgs e)                            {
            report.Visible = false;
        }


        protected void filtro_Pesquisar(object sender, PesquisarEventArgs e)            {
            carregarRelatorio(e);
            ViewState.Add("filtro", e);
            btnExportarExcel.Visible = true;    //e.ExportaRelatorio;
            pnlImprimir.Visible = true;
        }


        protected void btnExportarExcel_Click(object sender, EventArgs e)               {
            //limpo a resposta do HTTP
            Response.Clear();
            //adiciono o cabeçalho que faz o .Net entender que se trata de um xls
            Response.AddHeader("content-disposition", "attachment;filename=ranking_loja_report.xls");
            //zero o charset
            Response.Charset = "";
            //desabilito o cache do browser
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            //Seto o content type para xls
            Response.ContentType = "application/vnd.xls";
            //Crio um String Writer
            System.IO.StringWriter sWr = new System.IO.StringWriter();
            //Transformo em HTML String Writer
            System.Web.UI.HtmlTextWriter hWr = new HtmlTextWriter(sWr);
            //Mando o datagrid (que deve ser criado antes de renderizar o HtmlTextWriter criado...

            //TODO: Adicionar Rotina de Carga do Dados.
            carregarRelatorio(ViewState["filtro"] as PesquisarEventArgs);
            report.RenderControl(hWr);

            //mando escrever na tela. Com todos os cabeçalhos setados, é aberto para salvar o XML
            Response.Write(sWr.ToString());
            //Fecho a resposta.
            Response.End();
        }


        private void carregarRelatorio(PesquisarEventArgs e)                            {
            RankingFilter filter = new RankingFilter();

            filter.RfsList = e.Filter.RfsIdList;
            filter.RegiaoList = e.Filter.RegiaoIdList;
            filter.LojaList = e.Filter.LojaIdList;
            filter.DataInicial = e.Filter.DataInicial;
            filter.DataFinal = e.Filter.DataFinal;
            filter.TempoDesistencia = e.Filter.TempoAtendimento;
            filter.TempoAtendimentoMaior = e.Filter.TempoAtendimentoMaior;
            filter.TempoEsperaMaior = e.Filter.TempoEsperaMaior;

            m_reportDatasource = CadastroFacade.FindReportRankingLojaBy(filter);

            if (m_reportDatasource.Count > 0)
            {
                m_reportRfsDatasource = CadastroFacade.FindReportRankingLojaRfsBy(filter);
                m_reportConsolidadoDatasource = CadastroFacade.FindReportRankingConsolidadoBy(filter);
                pnConsolidadoBrasil.Visible = true;
                
            }
            report.Visible = true;          
            
        }


        public List<RelatorioRankingDTO> ReportDatasource                               {
            get {
                return m_reportDatasource;
            }
        }

        public List<RelatorioRankingDTO> ReportRfsDatasource {
            get {
                return m_reportRfsDatasource;
            }
        }

        public RelatorioRankingDTO ReportConsolidadoDatasource {
            get {
                return m_reportConsolidadoDatasource;
            }
        }
    }
}
